package nsu.edu.zsq.bean;

import java.util.Date;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.Pattern;

import cn.afterturn.easypoi.excel.annotation.Excel;
import lombok.ToString;

/**
 * Description: 课程表
 */
@ToString
public class Course {
    /**
     *  id
     */
    private Integer id;

    /**
     * 课程代码 course_no
     */
    @Excel(name = "课程代码", orderNum = "1")
    @Pattern(regexp="^[\\S]{7,10}$", message="课程代码7-10位数字，且不能出现空格")
    private String courseNo;

    /**
     * 课程名 course_name
     */
    @Excel(name = "课程名称", orderNum = "2")
    @Pattern(regexp="^[\\S]{2,25}$", message="课程名称2-25个字符，且不能出现空格")
    private String courseName;

    /**
     * 所属专业的专业代码 major_no <br>
     * 只能公共选修课的专业代码为空
     */
    @Excel(name = "所属专业代码", orderNum = "0")
    private String majorNo;

    /**
     * 教师编号 teacher_no
     */
    private String teacherNo;

    /**
     * 学分 credit
     */
    @Excel(name = "课程学分", orderNum = "3")
    @Min(value=1, message="1位数字")
    @Max(value=10, message="1位数字")
    private Integer credit;

    /**
     * 绩点 gpa
     */
    private Long gpa; 

    /**
     * 课程性质，1：必修；2：专业选修，3：公共选修 type
     */
    @Excel(name = "课程性质", orderNum = "3")
    @Min(value=1,message="课程性质格式不正确")
    @Max(value=3,message="课程性质格式不正确")
    private Integer type;

    /**
     * 是否结课，0：否；1：是 is_finish
     */
    private Integer isFinish;

    /**
     * 上课日（星期几，12345） start_day
     */
    private Integer startDay;

    /**
     * 上课时间（第几节，12，34，56，78，910） start_time
     */
    private Integer startTime;

    /**
     * 上课周期（开始周-结束周） time
     */
    @Excel(name = "上课周期(周)", orderNum = "5")
    @Pattern(regexp="[\\d]+\\-[\\d]+$", message="2-20个字符，且不能出现空格")
    private String time;

    /**
     * 上课的教室名（教学楼-教室号） room_name
     */
    private String roomName;

    /**
     * 排序号，默认1，降序规则 sort
     */
    @Excel(name = "排序号", orderNum = "6")
    @Min(value=1,message="排序号格式不正确")
    @Max(value=99999,message="排序号格式不正确")
    private Integer sort;

    /**
     * 操作者 operator
     */
    private String operator;

    /**
     * 操作时间 operator_time
     */
    private Date operatorTime;

    /**
     * Get 
     * @return id 
     */
    public Integer getId() {
        return id;
    }

    /**
     * Set 
     * @param id 
     */
    public void setId(Integer id) {
        this.id = id;
    }

    /**
     * Get 课程代码
     * @return course_no 课程代码
     */
    public String getCourseNo() {
        return courseNo;
    }

    /**
     * Set 课程代码
     * @param courseNo 课程代码
     */
    public void setCourseNo(String courseNo) {
        this.courseNo = courseNo == null ? null : courseNo.trim();
    }

    /**
     * Get 课程名
     * @return course_name 课程名
     */
    public String getCourseName() {
        return courseName;
    }

    /**
     * Set 课程名
     * @param courseName 课程名
     */
    public void setCourseName(String courseName) {
        this.courseName = courseName == null ? null : courseName.trim();
    }

    /**
     * Get 所属专业的专业代码
     * @return major_no 所属专业的专业代码
     */
    public String getMajorNo() {
        return majorNo;
    }

    /**
     * Set 所属专业的专业代码
     * @param majorNo 所属专业的专业代码
     */
    public void setMajorNo(String majorNo) {
        this.majorNo = majorNo == null ? null : majorNo.trim();
    }

    /**
     * Get 教师编号
     * @return teacher_no 教师编号
     */
    public String getTeacherNo() {
        return teacherNo;
    }

    /**
     * Set 教师编号
     * @param teacherNo 教师编号
     */
    public void setTeacherNo(String teacherNo) {
        this.teacherNo = teacherNo == null ? null : teacherNo.trim();
    }

    /**
     * Get 学分
     * @return credit 学分
     */
    public Integer getCredit() {
        return credit;
    }

    /**
     * Set 学分
     * @param credit 学分
     */
    public void setCredit(Integer credit) {
        this.credit = credit;
    }

    /**
     * Get 绩点
     * @return gpa 绩点
     */
	
	 public Long getGpa() { return gpa; }
	 

    /**
     * Set 绩点
     * @param gpa 绩点
     */
	
	  public void setGpa(Long gpa) { this.gpa = gpa; }
	 

    /**
     * Get 课程性质，1：必修；2：专业选修，3：公共选修
     * @return type 课程性质，1：必修；2：专业选修，3：公共选修
     */
    public Integer getType() {
        return type;
    }

    /**
     * Set 课程性质，1：必修；2：专业选修，3：公共选修
     * @param type 课程性质，1：必修；2：专业选修，3：公共选修
     */
    public void setType(Integer type) {
        this.type = type;
    }

    /**
     * Get 是否结课，0：否；1：是
     * @return is_finish 是否结课，0：否；1：是
     */
    public Integer getIsFinish() {
        return isFinish;
    }

    /**
     * Set 是否结课，0：否；1：是
     * @param isFinish 是否结课，0：否；1：是
     */
    public void setIsFinish(Integer isFinish) {
        this.isFinish = isFinish;
    }

    /**
     * Get 上课日（星期几，12345）
     * @return start_day 上课日（星期几，12345）
     */
    public Integer getStartDay() {
        return startDay;
    }

    /**
     * Set 上课日（星期几，12345）
     * @param startDay 上课日（星期几，12345）
     */
    public void setStartDay(Integer startDay) {
        this.startDay = startDay;
    }

    /**
     * Get 上课时间（第几节，12，34，56，78，910）
     * @return start_time 上课时间（第几节，12，34，56，78，910）
     */
    public Integer getStartTime() {
        return startTime;
    }

    /**
     * Set 上课时间（第几节，12，34，56，78，910）
     * @param startTime 上课时间（第几节，12，34，56，78，910）
     */
    public void setStartTime(Integer startTime) {
        this.startTime = startTime;
    }

    /**
     * Get 上课周期（开始周-结束周）
     * @return time 上课周期（开始周-结束周）
     */
    public String getTime() {
        return time;
    }

    /**
     * Set 上课周期（开始周-结束周）
     * @param time 上课周期（开始周-结束周）
     */
    public void setTime(String time) {
        this.time = time == null ? null : time.trim();
    }

    /**
     * Get 上课的教室名（教学楼-教室号）
     * @return room_name 上课的教室名（教学楼-教室号）
     */
    public String getRoomName() {
        return roomName;
    }

    /**
     * Set 上课的教室名（教学楼-教室号）
     * @param roomName 上课的教室名（教学楼-教室号）
     */
    public void setRoomName(String roomName) {
        this.roomName = roomName == null ? null : roomName.trim();
    }

    /**
     * Get 排序号，默认1，降序规则
     * @return sort 排序号，默认1，降序规则
     */
    public Integer getSort() {
        return sort;
    }

    /**
     * Set 排序号，默认1，降序规则
     * @param sort 排序号，默认1，降序规则
     */
    public void setSort(Integer sort) {
        this.sort = sort;
    }

    /**
     * Get 操作者
     * @return operator 操作者
     */
    public String getOperator() {
        return operator;
    }

    /**
     * Set 操作者
     * @param operator 操作者
     */
    public void setOperator(String operator) {
        this.operator = operator == null ? null : operator.trim();
    }

    /**
     * Get 操作时间
     * @return operator_time 操作时间
     */
    public Date getOperatorTime() {
        return operatorTime;
    }

    /**
     * Set 操作时间
     * @param operatorTime 操作时间
     */
    public void setOperatorTime(Date operatorTime) {
        this.operatorTime = operatorTime;
    }
}